from math import pi, sin, cos
from Konsole import DeveloperConsole

from direct.showbase.ShowBase import ShowBase
from direct.task import Task

class MyApp(ShowBase):
   def __init__(self):
      ShowBase.__init__(self)
      self.debug = True
      if self.debug == True:
         self.console = DeveloperConsole()
         self.console.show()
         self.accept('f12-up',self.console.toggle)

      # Load the environment model.
      self.environ = self.loader.loadModel("models/environment")
      # Reparent the model to render.
      self.environ.reparentTo(self.render)
      # Apply scale and position transforms on the model.
      self.environ.setScale(0.25, 0.25, 0.25)
      self.environ.setPos(-8, 42, 0)

      # Add the spinCameraTask procedure to the task manager.
      self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")

   # Define a procedure to move the camera.
   def spinCameraTask(self, task):
      angleDegrees = task.time * 6.0
      angleRadians = angleDegrees * (pi / 180.0)
      self.camera.setPos(20 * sin(angleRadians), -20.0 * cos(angleRadians), 3)
      self.camera.setHpr(angleDegrees, 0, 0)
      return Task.cont

app = MyApp()
app.run()